package com.center.growcenterserver.config;

import com.center.growcenterserver.interceptor.TokenInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


/**
 * WebMvcConfig 类是一个配置类，实现了 WebMvcConfigurer 接口，主要用于配置 Spring MVC 的拦截器。
 * 在这个类中，定义了两个拦截器：CorsInterceptor 和 TokenInterceptor，并指定了它们各自应该拦截或放行的路径模式。
 *
 * 主要功能：
 * - 配置 CORS 拦截器 (CorsInterceptor)，用于处理跨域资源共享问题。该拦截器被应用到所有请求路径上。
 * - 配置 Token 拦截器 (TokenInterceptor)，用于验证用户请求中的 token 以确保安全性。此拦截器针对特定的 API 路径进行拦截，
 *   同时也指定了不需要拦截（即可以直接访问）的路径列表，例如登录、静态资源文件等。
 */

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Bean
    public CorsInterceptor corsInterceptor() {
        return new CorsInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(corsInterceptor())
                .addPathPatterns("/**");


        /*****************LOGIN*****************/
        InterceptorRegistration interceptorRegistration = registry.addInterceptor(new TokenInterceptor());
        //拦截所有请求
        interceptorRegistration.addPathPatterns(
                "/collection/**",
                "/comment/**",
                "/rankList/**"
        );
        //哪些请求不用拦截
        interceptorRegistration.excludePathPatterns(
                "/admin/login/status",
                "/user/login",
                "/**/*.html","/**/*.js","/**/*.css","/**/*.jpg","/**/*.png","/**/*.mp3",
                "/banner/**",
                "/song/**",
                "/singer/**",
                "/songList/**",
                "/user/**",
                "/singer/avatar/update"  //这里不应该放行，为了测试方便，前端这一个代码不容易改写。文件上传




        );
    }



}
